package control;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
import model.bean.Empresa;
import model.bo.EmpresaBO;
import apresentacao.GerentePagina;
import apresentacao.GerenteValidacao;
import enumerador.Estado;
import enumerador.ModosVisao;

public class EmpresaMB extends GerentePagina implements Serializable {

	private static final long serialVersionUID = 7367474948667300919L;
	
	private Empresa        empresa = new Empresa();
	private EmpresaBO    empresaBO = new EmpresaBO();
	private List<Empresa> empresas = new ArrayList<Empresa>();

	public String inclusao() {
		empresa = new Empresa();
		setVisao(ModosVisao.INCLUSAO);
		return "empresa";
	}

	public void incluir() {
		try {
			empresa = empresaBO.incluir(empresa);
		} catch (Exception e) {
			e.printStackTrace();
			GerenteValidacao.mensagemErroIncluir();
		}
		setVisao(ModosVisao.INCLUIR);
		GerenteValidacao.mensagemIncluir();
	}

	public void edicao() {
		try {
			empresa = empresaBO.consultar(empresa);
		} catch (Exception e) {
			e.printStackTrace();
		}
		setVisao(ModosVisao.EDICAO);		
	}

	public void salvar() {
		try {
			empresaBO.alterar(empresa);
		} catch (Exception e) {
			e.printStackTrace();
			GerenteValidacao.mensagemErroAlterar();
		}
		setVisao(ModosVisao.SALVAR);
		GerenteValidacao.mensagemAlterar();
	}

	public void excluir() {
		try {
			empresaBO.excluir(empresa);
		} catch (Exception e) {
			e.printStackTrace();
			GerenteValidacao.mensagemErroExcluir();
		}
		setVisao(ModosVisao.INCLUSAO);
		empresa = new Empresa();
		GerenteValidacao.mensagemExcluir();
	}
	
	public void pesquisar(){
		try {
			empresas = empresaBO.listar(empresa);
		} catch (Exception e) {
			e.printStackTrace();
			GerenteValidacao.mensagemErroPesquisar();
		}
	}

	public String listar() {
		
		empresa = new Empresa();
		
		try {
			empresas = empresaBO.listar(empresa);
		} catch (Exception e) {
			e.printStackTrace();
			GerenteValidacao.mensagemErroPesquisar();
		}
		return "empresaListagem";
	}

	public String consultar() {
		if(!empresa.getSituacao()){
			setVisao(ModosVisao.CONSULTAR);
			botaoBloquear = false;
		}else if(empresa.getSituacao()){
			setVisao(ModosVisao.CONSULTAR);
			botaoValidar = false;
		}
		return "empresa";
	}

	public void validar() {
		try {
			empresaBO.validar(empresa);
		} catch (Exception e) {
			e.printStackTrace();
		}
		GerenteValidacao.mensagemValidar();
		this.consultar();
	}

	public void bloquear() {
		try {
			empresaBO.bloquear(empresa);
		} catch (Exception e) {
			e.printStackTrace();
		}
		GerenteValidacao.mensagemBloquear();
		this.consultar();
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public EmpresaBO getEmpresaBO() {
		return empresaBO;
	}

	public void setEmpresaBO(EmpresaBO empresaBO) {
		this.empresaBO = empresaBO;
	}

	// List

	public List<SelectItem> getEstados() {
		List<SelectItem> resultado = Estado.getListSelectItem();
		return resultado;
	}

	public List<Empresa> getEmpresas() {
		return empresas;
	}

	public void setEmpresas(List<Empresa> empresas) {
		this.empresas = empresas;
	}
}
